package xyz.scootaloo.mono.base.lang

import java.io.Serializable

/**
 * 系统通用的操作说明
 *
 * @see SC 类型别名
 * @author flutterdash@qq.com
 * @since 2021/7/25 8:44
 *
 * @param code 操作代码, 双数表示成功, 单数表示失败
 */
enum class StatusCode(
    val code: Int,
    val success: Boolean,
    val message: String
) : Serializable {

    /* 0~999 通用的消息标志 */
    SUCCESS(0, true, "操作成功"),
    FAILED(1, false, "操作失败"),

    NO_SUCH_RESOURCE(101, false, "没有这样的资源"),

    /* 1000~1999 认证授权相关 */
    LOGIN_SUCCESS(1000, true, "登陆成功"),
    USERNAME_OR_PASSWORD_MISTAKE(1001, false, "账号或密码错误"),
    REGISTER_SUCCESS(1200, true, "注册成功"),
    DUPLICATE_USERNAME(1201, false, "用户名重复"),
    LACK_REGISTRATION_INFO(1203, false, "缺少注册信息, 请检查账号密码是否完整"),
    PASSWORD_IS_TOO_SHORT(1205, false, "密码不能少于6位"),
    NO_PERMISSION_FOR_THIS_PATH(1301, false, "没有访问此路径的权限"),
    NOT_FOUND_TOKEN(1303, false, "访问此路径需要token, 但是未在request中找到"),
    NEED_TO_LOGIN_AGAIN(1305, false, "需要重新登陆"),

    /* 2000~2999 用户相关 */

    /* 3000~3999 服务器错误 */
    SERVER_INTERNAL_ERROR(3001, false, "服务器内部错误"),

    /* 4000~5999 其他业务代码 */
}
